home *** CD-ROM | disk | FTP | other *** search
- Program TestHashTable;
-
- Uses HashTabl,GenTable,Crt;
-
- Var
- SymTab : SymbolTable;
- KeyStr : String;
- T : Text;
- Dupe : Boolean;
- Exist : Boolean;
- I : Word;
- DC : Word;
- Num : Word;
- Data : DataRec;
- Temp : HPtr;
-
- Begin
- DC := 0;
- Num := 0;
- ClrScr;
- SymTab.Create;
- Assign (T,'Test.Dat');
- ReSet (T);
- While Not Eof(T) do
- Begin
- ReadLn (T,KeyStr);
- Num := Num + 1;
- Data.Symb := KeyStr;
- Data.Addr := Num;
- Data.Line := Num;
-
- SymTab.Enter (Data.Symb,Data,Dupe);
-
- If Dupe Then DC := DC + 1;
-
- End;
- For I := 0 to MaxEntry-1 do
- If SymTab.Used[I] Then
- Begin
- Write (I);
- GoToXY (10,WhereY);
- Temp := SymTab.Entry[I];
- Temp^.Get_Data (Data,SizeOf(Data));
- {
- Manipulate/Use Data;
- }
- While Temp <> Nil do
- Begin
- Write (' ',Temp^.Key);
- Temp := Temp^.Next
- End;
- WriteLn
- End;
- WriteLn;
- WriteLn (Num,' Keys were read. ',DC,' Duplicates were encountered.');
- KeyStr := '';
- While KeyStr <> '0' do
- Begin
- Write ('Enter Key to be retrieved [0 to quit] : ');
- ReadLn (KeyStr);
- If KeyStr <> '0' Then
- Begin
- SymTab.Retrieve (KeyStr,Exist,Data);
- If Exist Then WriteLn ('Found!')
- Else WriteLn ('Not Found.');
- End
- End;
- Reset (T);
- Exist := True;
- Write ('Press <Return>/<Enter> to Commence Final {EXHAUSTIVE} Key Test.');
- ReadLn;
- While (Not Eof (T)) and (Exist) do
- Begin
- ReadLn (T,KeyStr);
- SymTab.Retrieve (KeyStr,Exist,Data)
- End;
- If Exist Then WriteLn ('All Entries Tested and Confirmed!!!')
- Else WriteLn ('Could Not Find Entry ',KeyStr,' Which SHOULD be found!');
- Write ('Press <Return>/<Enter> to Continue...');
- ReadLn;
- Close (T);
- SymTab.Destroy
- End.
-